package com.example.demo.lianxi;

import java.util.ArrayList;
import java.util.List;
import java.util.Scanner;

public class lianxitest {

    /*杨辉三角方法一
    public static void main(String args[]){
        int[][] arr=new int[10][10];//定义了一个长度为10，高度为10的二维数组，数组中的值都为0
        for(int i=0;i<arr.length;i++){
            //由于只给杨辉三角内的位置赋值，所以是j<=i
            for(int j=0;j<=i;j++){
                //根据规律，使用if else赋值
                if(j==0||j==i){
                    arr[i][j]=1;
                }else{
                    arr[i][j]=arr[i-1][j-1]+arr[i-1][j];
                }
                System.out.print(arr[i][j]+"\t");
            }
            System.out.println();
        }
    }

     */

    public static void main(String args[]){
        // 重点在于那个number=number*(i-j)/(j+1)，掌握了杨辉三角的作用。而关于System.out.format是一种类似于C语言中的输出，查看API即可知
        int rows=10;
        for(int i=0;i<rows;i++){
            int number=1;
            System.out.format("%"+(rows-i)*2+"s","");
            for(int j=0;j<=i;j++){
                System.out.format("%4d",number);
                number=number*(i-j)/(j+1);
            }
            System.out.println();
        }
    }
/*format用法
    转换符	含义
    b	布尔类型，只要实参为非false的布尔类型，均格式化为字符串true，否则为字符串false
    n	平台独立的换行符, 也可通过System.getProperty("line.separator")获取
    f	浮点数型（十进制）。显示9位有效数字，且会进行四舍五入。如99.99
    a	浮点数型（十六进制）
    e	指数类型。如9.38e+5
    g	浮点数型（比%f，%a长度短些，显示6位有效数字，且会进行四舍五入）
    s	字符串类型
    c	字符类型

 */



    /*九九乘法表
    public static void main(String args[]){
        //变量用于控制行数
        for(int i=1;i<10;i++){
            //变量用于控制每行中参与计算的最大数值，与行数相等
            for(int j=1;j<=i;j++){
                //设置输出的格式，控制拍板对齐
                System.out.print(j+"*"+i+"="+(j*i)+"  ");
            }
            System.out.println();
        }
    }

     */


    /*加减乘除写法
    public static void main(String[] args) {
        List<Character> charList = new ArrayList<>();
        charList.add('+');
        charList.add('-');
        charList.add('*');
        charList.add('/');
        while(true){
            System.out.println("请输入下一个表达式");
            Scanner sc = new Scanner(System.in);
            String line = sc.nextLine();
            System.out.println(line);
            StringBuilder sb = new StringBuilder();
            List<String> list = new ArrayList<>();
            for (int i = 0; i < line.length(); i++) {
                Character ch = line.charAt(i);
                if(ch == ' ') continue;
                if(charList.contains(ch)){
                    String s = sb.toString();
                    list.add(s);
                    list.add(String.valueOf(ch));
                    sb = new StringBuilder();
                } else {
                    sb.append(ch);
                }
            }
            list.add(sb.toString());
            if(list.size() != 3){
                System.out.println("输入格式错误");
                continue;
            }
            Double value = calc(list.get(0), list.get(1) , list.get(2));

            if(value == null){
                System.out.println("除数不能为0");
                continue;
            }
            System.out.println("计算结果为" + value);
        }
    }

    private static Double calc(String v1, String type, String v2) {

        Double d1 = Double.valueOf(v1);
        Double d2 = Double.valueOf(v2);
        if("+".equals(type)){
            return d1 + d2;
        }
        if("-".equals(type)){
            return d1 - d2;
        }
        if("*".equals(type)){
            return d1 * d2;
        }
        if("/".equals(type)){
            if(d2 == 0d){
                return null;
            }
            return d1 / d2;
        }
        System.out.println("表达式错误");
        return null;
    }

     */



   /*1. ==和equals的区别
   public static void main(String args[]){
        int a = 127;
        int b = 127;
        int c = 128;
        int d = 128;

        System.out.println(a.equals(b));

        System.out.println(c.equals(d));
    }

    */
    /*2.加减乘除的自己写法
    public static void main(String[] args) {
        lianxitest test=new lianxitest();
        int sum=test.sum(2,3);
        double chufa1=test.chufa(5,0);
        System.out.println("a+b="+sum);
        System.out.println("c/d="+chufa1);

        */

    /* 加减乘除的自己写法
       lianxitest test=new lianxitest();

        Scanner sc=new Scanner(System.in);

        System.out.println("请输入加法a");
        double a=sc.nextDouble();
        System.out.println("请输入加法b");
        double b=sc.nextDouble();




        double sum1=test.sum(a,b);
        System.out.println("相加 ="+sum1);//加法

        double jianfa1=test.jianfa(a,b);
        System.out.println("相加 ="+jianfa1);//减法

        double shengfa1=test.chengfa(a,b);
        System.out.println("相加 ="+shengfa1);//减法

        double chufa1=test.chufa(a,b);
        System.out.println("相除= "+chufa1);//加法



        }
    }


            //加法
            public double sum ( double a, double b){
                double resultSum = a + b;
                return resultSum;
            }

            //减法
            public double jianfa ( double a, double b){
                double resultjianfa = a - b;
                return resultjianfa;
            }

            //减法
            public double chengfa ( double a, double b){
                double resultchengfa = a * b;
                return resultchengfa;
            }


            //除法
            public double chufa ( double c, double d){
                double resultchufa = 0;
                if (d != 0) {

                    resultchufa = c / d;
                } else {
                    System.out.println("除数不能为0");
                    return resultchufa=0;
                }
                return resultchufa;
            }

     */
    }

